#ifndef PACKERCONST_H
#define PACKERCONST_H

#include <QObject>

#define MAX_FW_PACK_SIZE 1024

#define CMD_CTL 0XEA50        //控制指令
#define CMD_CTL_REPLY 0XEA80  //控制指令应答
#define CMD_DOWN 0XEA51       //数据下载指令
#define CMD_DOWN_REPLY 0XEA81 //数据下载指令应答
#define CMD_PACK 0XEA52       //数据包接收
#define CMD_PACK_REPLY 0XEA82 //数据包接收应答

#define OTA_TYPE_DOWN 1 //全量下载
#define OTA_TYPE_DIFF 2 //差分下载

typedef struct {
  uint32_t ota_type;     // 固件的类型
  uint32_t fw_size;      // 要下载的固件字节长度
  uint32_t fw_pack_size; //要下载的固件分包的包长
  uint32_t fw_pack_num;  //要下载的固件分包的数量
} update_header_inst;

typedef struct {
  uint8_t packer_buff1[MAX_FW_PACK_SIZE]; //接收数据缓冲区1
  uint8_t packer_buff2[MAX_FW_PACK_SIZE]; //接收数据缓冲区2
  uint8_t *index_list;                    //所有数据包的确认标记
  uint16_t index_list_len;                // list的长度
  uint16_t index_cur; //当前传递的包索引，从0开始算
  uint8_t index_win;  //记录当前传递进度的滑动窗口
} update_worker_inst;

#endif // PACKERCONST_H
